package com.hujing.springsource.a12;

import java.lang.reflect.Proxy;

/**
 * jdk代理 jdk代理是通过接口实现的
 */
public class JdkProxyDemo {

    interface Foo {
        void foo();
    }

    static class Target implements Foo {
        public void foo() {
            System.out.println("Target.foo()");
        }
    }

    public static void main(String[] args) {
        Target target = new Target();

        //创建代理对象
        Foo proxy = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(), new Class[]{Foo.class}, (p, method, args1) -> {
            System.out.println("before invoke");
            //调用目标对象方法
            return method.invoke(target, args1);
        });

        proxy.foo();
    }

}
